#include <iostream>
#include <vector>
using namespace std;

template<typename T>
class Array{
  size_t sz;
  T* data;
public:
  Array(int n = 0) : sz(n), data(new T[sz]) {}
  Array(const Array<T>& a) : sz(a.sz), data(new T[sz]) {
    for(size_t i = 0; i < sz; ++i){
      data[i] = a.data[i];
    }
  }

  Array<T>& operator=(const Array<T>& a){
    if(this != &a){
      Array<T> b(a);
      swap(*this, b);
    }
    return *this;
  }

#if 0
  Array(Array<T>&& a) : sz(a.sz), data(a.data) {
    a.sz = 0;
    a.data = nullptr;
  }

  Array<T>& operator=(Array<T>&& a){
    if(this != &a){
      sz = a.sz;
      data = a.data;
      a.sz = 0;
      a.data = nullptr;
    }
    return *this;
  }
#endif

  ~Array() { delete[] data; }

  void swap(const Array<T>& a){
    swap(sz, a.sz);
    swap(data, a.data);
  }
  size_t size() const { return sz; }
  T& operator[](int i) { return data[i]; }
};

int main(){
  vector<Array<char> > va;
  for(int i = 0; i < 1000; ++i){
    va.push_back(Array<char>(1024 * 1024));
  }
  long long n = 0;
  for(auto& a : va){
    for(int i = 0, z = a.size(); i < z; ++i){
      if(a[i]){
        ++n;
      }
    }
  }
  cout << n << endl;
}
/* 移动语义对比
复制：2.98s
移动：2.33s
*/